def odd(inLst:List[Int]):List[Int]={
  if(inLst==Nil) Nil
  else if(inLst.head%2==1) inLst.head::odd(inLst.tail)
  else odd(inLst.tail)
}
def even(inLst:List[Int]):List[Int]={
  if(inLst==Nil) Nil
  else if(inLst.head%2==0) inLst.head::even(inLst.tail)
  else even(inLst.tail)
}
val l=List(1,2,3,4,5,56,67,8,8)
println(l)    

def filter(inLst:List[Int],cond:(Int)=>Boolean):List[Int]= {
   if(inLst==Nil) Nil
   else if(cond(inLst.head)) inLst.head::filter(inLst.tail,cond)
   else filter(inLst.tail,cond)
} 

def isOdd(x:Int)= x%2==1
def isEven(x:Int)= x%2==0

println(filter(l,isEven))
